from django.http import JsonResponse
from django.utils import timezone


class Result:
    """_summary_
    直接调用工厂模式，生成对应的返回值（而非多次封装dict再到jsonresponse）

    Returns:
        jsonresponse
    """
    @staticmethod
    def success(data=None, message="操作成功"):
        return JsonResponse({
            'code': 200,
            'message': message,
            'data': data,
            'timestamp': timezone.now().timestamp()
        }, status=200)

    @staticmethod
    def error(code=400, message="操作失败", data=None):
        return JsonResponse({
            'code': code,
            'message': message,
            'data': data,
            'timestamp': timezone.now().timestamp()
        }, status=code)

    # 常用错误类型快捷方法
    @staticmethod
    def validation_error(message="参数验证失败"):
        return Result.error(422, message)

    @staticmethod
    def forbidden(message="权限不足"):
        return Result.error(403, message)

    @staticmethod
    def unauthorized(message="未授权访问"):
        return Result.error(401, message)